import static java.lang.System.out;
import java.io.*;
import java.sql.*;
import java.util.Scanner;
public class MyOD {
    public static void main(String[] args){
        String FileName=args[0];
        int n=-1,len=0,FileLen=0;
        byte [] a=new byte[100];
        try  {
            RandomAccessFile f2 = new RandomAccessFile("D:\\软件\\IdeaProjects\\第八周课堂作业\\src\\c.text", "r");
            FileLen=(int)f2.length();//获得文件中字符的个数
        }
        catch (FileNotFoundException e) {}
        catch (IOException e){}
        try{
            File f=new File("D:\\软件\\IdeaProjects\\第八周课堂作业\\src\\c.text");
            InputStream in = new FileInputStream(f);
            while((n=in.read(a,0,16))!=-1) {
                //不断读取文件中的字符，每次读取16个，n是实际读取的个数
                String s=new String (a,0,n);
                out.printf("%07o",len);
                //输出每一行的开头
                char [] ch=s.toCharArray();
                //将读取到的字符串转化为字符数组
                for(int i=0;i<s.length();i++){
                    System.out.print("  ");
                    System.out.print(Integer.toHexString((int)ch[i]));
                }
                //第一行先按格式输出的ASCII码
                len=len+n;
                if(len==FileLen){
                    System.out.print("   ");
                    System.out.print("0a");
                }
                System.out.println();
                System.out.print("       ");
                for(int i=0;i<s.length();i++){
                    System.out.print("   ");
                    System.out.print(ch[i]);
                }
                //第二行按格式输出每个字符
                if(len==FileLen){
                    System.out.print("   ");
                    System.out.print("\\n");
                }
                //全部输出完毕后要输出最后的“\n”
                System.out.println();
            }
            out.printf("%07o",len);
            //最后一行是总字符个数的8进制表示
            in.close();
        }
        catch(IOException e) {
            System.out.println("File read Error"+e);
        }
    }
}
